import xlrd
from xlutils.copy import copy


class ReadExcel():

    def __init__(self, file_path="../data/新建 XLS 工作表.xls"):
        # 打开工作蒲
        self.work_book = xlrd.open_workbook(file_path)
        # 获取所有sheet名字
        self.allnames = self.work_book.sheet_names()
        # 复制原来的工作簿
        self.copy_workbook = copy(self.work_book)

    def get_data_by_name(self, sheetName, rowIndex):
        """
        读取sheet表某一行的数据
        :param sheetName: sheet表名
        :param rowIndex:  sheet 表的第row_index 行
        :return: 指定行的所有数据
        """
        sheet = self.work_book.sheet_by_name(sheetName)
        rowData = sheet.row_values(rowIndex)
        return rowData

    def get_nrows(self, sheetName):
        """
        获取指定sheet表的有效数据行数
        :param sheetName:
        :return:有效数据行数
        """
        nrows = self.work_book.sheet_by_name(sheetName).nrows
        return nrows

        # 向指定行和列写入指定数据

    def write_data(self, sheet_index, row, col, content):
        """
        向指定行和列写入指定数据
        :param sheet_index:  sheet表下标
        :param row:  要写入数据位置的行号
        :param col:  要写入数据位置的列号
        :param content: 要写入的内容
        :return:
        """
        sheet = self.copy_workbook.get_sheet(sheet_index)
        sheet.write(row, col, content)

    def save_report(self, report_name="Agileone 项目接口自动化测试报告-v1.0.xls"):
        """
        保存测试报告
        :param report_name: 测试报告名称
        :return:
        """
        self.copy_workbook.save("../report/{}".format(report_name))
